//
//  MPBTools+EncryptDecrypt.h
//  MiaoPai
//
//  Created by jiaxuzhou on 2017/6/10.
//  Copyright © 2017年 Jeakin. All rights reserved.
//
//  加密相关的工具类


#import "MPBTools.h"


@interface MPBTools (EncryptDecrypt)


#pragma mark - ********************************** MD5 加密 *****************************************

/**
 16位MD5加密，给指定字符串，返回全是大写字母

 @param stringSource 要加密的字符串
 @return 加密完成的数据
 */
+ (NSString *)mp_EncryptByMD5Upper16WithStr:(NSString *)stringSource;

/**
 16位MD5加密，给指定Data，返回全是大写字母

 @param dataSource 要加密的NSData
 @return 加密完成的数据
 */
+ (NSString *)mp_EncryptByMD5Upper16WithData:(NSData *)dataSource;


/**
  16位MD5加密，给指定字符串，返回全是小写字母

 @param stringSource 要加密的字符串
 @return 加密完成的数据
 */
+ (NSString *)mp_EncryptByMD5Lower16Str:(NSString *)stringSource;

/**
  16位MD5加密，给指定字符串，返回全是小写字母

 @param dataSource 要加密的NSData
 @return 加密完成的数据
 */
+ (NSString *)mp_EncryptByMD5Lower16Data:(NSData *)dataSource;


#pragma mark - ******************************* AES128位Hex 加解密 ***********************************

/**
 AES128位Hex方式加密函数
 
 @param aStr 要加密的字符串
 @param aKey AES的加密key
 @return 返回加密之后的字符串 该字符串先走AES然后走Hex
 */
+ (NSString *)mp_AES128HexEncryptStr:(NSString *)aStr password:(NSString *)aKey;

/**
 AES128位Hex方式加密函数

 @param aData 要加密的Data
 @param aKey AES的加密key
 @return 返回加密之后的字符串 该字符串先走AES然后走Hex
 */
+ (NSString *)mp_AES128HexEncryptData:(NSData *)aData password:(NSString *)aKey;

/**
 AES128位Hex方式解密函数
 
 @param aStr 要解密的字符串
 @param aKey AES的加密key
 @return 返回解密之后的字符串 先进行Hex之后再进行AES解密
 */
+ (NSString *)mp_AES128HexDecryptStr:(NSString *)aStr password:(NSString *)aKey;

/**
 AES128位Hex方式解密函数

 @param aData 要解密的Data
 @param aKey AES的加密key
 @return 返回解密之后的字符串 先进行Hex之后再进行AES解密
 */
+ (NSString *)mp_AES128HexDecryptData:(NSData *)aData password:(NSString *)aKey;


#pragma mark - *********************************** HEX 加解密 ***************************************

/**
 HEX加密

 @param strData 加密的Data
 @return 加密后的字符串
 */
+ (NSString *)mp_EncryptByHEXData:(NSData *)strData;

/**
 HEX加密

 @param aStr 加密的字符串
 @return 加密后的字符串
 */
+ (NSString *)mp_EncryptByHEXStr:(NSString *)aStr;

/**
 HEX解密
 
 @param aStr 加密的字符串
 @return 解密后的data
 */
+ (NSData *)mp_DecryptByHEXStr:(NSString *)aStr;

/**
 HEX解密

 @param aData 加密的Data
 @return 解密后的data
 */
+ (NSData *)mp_DecryptByHEXData:(NSData *)aData;


#pragma mark - ********************************* Base64 加解密 **************************************

/**
 Base64加密

 @param aStr 需要加密的字符串
 @return 加密后的字符串
 */
+ (NSString *)mp_EncryptByBase64Str:(NSString *)aStr;

/**
 Base64加密

 @param strData 需要加密的Data
 @return 加密后的字符串
 */
+ (NSString *)mp_EncryptByBase64Data:(NSData *)strData;

/**
 Base64解密

 @param aStr 加密后的字符串
 @return 解密后的Data
 */
+ (NSData *)mp_DecryptByBase64Str:(NSString *)aStr;

/**
 Base64解密

 @param aData 加密后的Data
 @return 解密后的Data
 */
+ (NSData *)mp_DecryptByBase64Data:(NSData *)aData;


@end
